package com.example.springboottest.example.thread;

public class ThreadLock2 implements Runnable {
    private TestLockService testService;

    public ThreadLock2(TestLockService testService) {
        this.testService = testService;
    }

    @Override
    public void run() {
        /**
         * 添加一个可重入锁，和同步方法效果是一样的
         * 优点：
         *      可以控制锁住时间比较灵活，
         *      同时可以增加多把锁，避免一个对象有多个同步方法时候，一个同步方法执行，导致其他的同步方法等待
         *      还可以根据条件通过Condition对象增加判断
         * 缺点是需要手动添加和释放锁
         */
        testService.helloLock2(Thread.currentThread().getName());
    }
}
